/**
 * 用户反馈相关接口
 * @module api/feedback
 * @author 团队名称
 * @description 用户反馈相关的API调用函数
 */

/**
 * @typedef {Object} FeedbackData
 * @property {string} type - 反馈类型（function：功能问题，experience：体验建议，content：内容优化，others：其他）
 * @property {string} content - 反馈内容
 * @property {string} [contact] - 联系方式，可以是手机号或邮箱
 * @property {Array<string>} [images] - 图片文件路径或URL数组
 * @property {string} [submitTime] - 提交时间，ISO格式字符串
 */

/**
 * @typedef {Object} FeedbackResponse
 * @property {number} code - 状态码，200表示成功
 * @property {string} message - 响应消息
 * @property {Object} data - 响应数据
 * @property {string} data.feedbackId - 反馈ID
 * @property {string} data.submitTime - 提交时间，ISO格式字符串
 * @property {string} data.status - 状态（pending：待处理，processing：处理中，replied：已回复）
 */

/**
 * @typedef {Object} ImageUploadResponse
 * @property {number} code - 状态码，200表示成功
 * @property {string} message - 响应消息
 * @property {Object} data - 响应数据
 * @property {string} data.imageUrl - 上传后的图片URL
 * @property {number} data.size - 文件大小，单位字节
 * @property {string} data.uploadTime - 上传时间，ISO格式字符串
 */

/**
 * @typedef {Object} FeedbackHistoryResponse
 * @property {number} code - 状态码，200表示成功
 * @property {string} message - 响应消息
 * @property {Object} data - 响应数据
 * @property {Array<Object>} data.list - 反馈列表
 * @property {number} data.total - 总条数
 */

/**
 * @typedef {Object} FeedbackHistoryItem
 * @property {string} id - 反馈ID
 * @property {string} type - 反馈类型
 * @property {string} typeName - 反馈类型名称
 * @property {string} content - 反馈内容
 * @property {Array<string>} images - 图片数组
 * @property {string} [contact] - 联系方式
 * @property {string} submitTime - 提交时间
 * @property {string} status - 状态
 * @property {Object} [reply] - 回复信息
 * @property {string} [reply.content] - 回复内容
 * @property {string} [reply.time] - 回复时间
 */
import request from './request.js';
import { USE_MOCK } from './config';
import { mockSubmitFeedback, mockUploadImage, mockGetFeedbackHistory } from '../mock/feedback';

/**
 * 提交反馈信息
 * @param {FeedbackData} data - 反馈数据
 * @param {string} data.type - 反馈类型（function：功能问题，experience：体验建议，content：内容优化，others：其他）
 * @param {string} data.content - 反馈内容
 * @param {string} [data.contact] - 联系方式，可以是手机号或邮箱
 * @param {Array<string>} [data.images] - 图片文件路径或URL数组
 * @returns {Promise<FeedbackResponse>} 返回提交反馈的结果
 */
export const submitFeedback = (data) => {
  if (USE_MOCK) {
    return mockSubmitFeedback(data);
  }
  return request.post('/api/feedback/submit', data);
};

/**
 * 上传反馈图片
 * @param {string} file - 文件路径或文件对象
 * @returns {Promise<ImageUploadResponse>} 返回图片上传结果
 */
export const uploadFeedbackImage = (file) => {
  if (USE_MOCK) {
    return mockUploadImage(file);
  }
  return request.upload('/api/feedback/upload-image', {
    filePath: file,
    name: 'file',
  });
};

/**
 * 获取反馈历史记录
 * @param {Object} [params] - 查询参数
 * @param {number} [params.page=1] - 页码
 * @param {number} [params.pageSize=10] - 每页条数
 * @param {string} [params.status] - 状态筛选（pending：待处理，processing：处理中，replied：已回复）
 * @returns {Promise<FeedbackHistoryResponse>} 返回反馈历史记录
 */
export const getFeedbackHistory = (params) => {
  if (USE_MOCK) {
    return mockGetFeedbackHistory(params);
  }
  return request.get('/api/feedback/history', params);
};
